﻿2026-06-21T12:00:34.6960545Z ##[group]Run cargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'
2026-06-21T12:00:34.6964233Z [36;1mcargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'[0m
2026-06-21T12:00:34.7172045Z shell: /usr/bin/bash -e {0}
2026-06-21T12:00:34.7172293Z env:
2026-06-21T12:00:34.7172512Z   SPT_REGISTRY_BUSY_TIMEOUT_MS: 30000
2026-06-21T12:00:34.7172763Z   RUSTFLAGS: -C link-arg=-fuse-ld=mold
2026-06-21T12:00:34.7172983Z ##[endgroup]
2026-06-21T12:00:35.7868884Z     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.39s
2026-06-21T12:00:35.9013571Z ────────────
2026-06-21T12:00:35.9014015Z  Nextest run ID d556d2b5-f2f3-41c7-af40-fc488df97d0a with nextest profile: default
2026-06-21T12:00:35.9014513Z     Starting 90 tests across 39 binaries (48 binaries skipped)
2026-06-21T12:00:50.5551251Z         PASS [  14.653s] ( 1/90) spt::attach_wedge_e2e attach_wedge_dead_child_plus_dropped_pump_does_not_wedge_the_broker
2026-06-21T12:01:00.3846877Z         PASS [   9.829s] ( 2/90) spt::bind_cwd_project_e2e endpoint_run_records_cwd_and_appears_under_its_project
2026-06-21T12:01:41.9533103Z         PASS [  41.569s] ( 3/90) spt::brain_respawn_rename brain_respawns_onto_applied_bytes_after_in_place_rename
2026-06-21T12:02:10.0193235Z         PASS [  28.066s] ( 4/90) spt::brain_restart_psyche_dup_e2e brain_restart_leaves_exactly_one_psyche_per_endpoint
2026-06-21T12:02:32.7326980Z         PASS [  22.713s] ( 5/90) spt::brain_split broker_survives_brain_kill_and_respawns_it
2026-06-21T12:02:55.4497239Z         PASS [  22.717s] ( 6/90) spt::brain_split seed_anchor_survives_brain_cycle
2026-06-21T12:03:33.0090726Z         PASS [  37.559s] ( 7/90) spt::brain_survive pty_and_quic_survive_brain_process_restart_onto_swapped_binary
2026-06-21T12:03:48.0008097Z         PASS [  14.992s] ( 8/90) spt::dummy_harness_e2e endpoint_run_attach_awaits_online_before_attaching
2026-06-21T12:03:58.4824747Z         PASS [  10.482s] ( 9/90) spt::dummy_harness_e2e endpoint_run_brings_up_a_long_lived_dummy_harness_and_rc_attaches
2026-06-21T12:03:58.7611623Z         PASS [   0.279s] (10/90) spt::gateway_owner_shell_e2e gateway_typed_owner_owns_a_shell_on_every_path_keyed_on_id
2026-06-21T12:03:58.7649198Z         PASS [   0.004s] (11/90) spt::job_escape_e2e daemon_survives_terminal_close_via_session_detachment
2026-06-21T12:04:16.3347789Z         PASS [  17.570s] (12/90) spt::livehost_bootgate_e2e cold_start_does_not_revive_a_sessionless_online_latched_perch
2026-06-21T12:04:44.1213033Z         PASS [  27.786s] (13/90) spt::livehost_bootrace_e2e netless_online_live_agent_is_hosted_by_the_real_daemon_brain
2026-06-21T12:05:03.8082938Z         PASS [  19.687s] (14/90) spt::livehost_nonresident_e2e online_live_agent_with_fast_exiting_psyche_stamps_parent_and_clears_phantom
2026-06-21T12:05:18.2058699Z         PASS [  14.397s] (15/90) spt::livehost_psyche_fail_e2e online_live_agent_with_missing_psyche_binary_stamps_a_harness_reachable_error
2026-06-21T12:05:18.2099524Z         PASS [   0.004s] (16/90) spt::n1_pairing new_brain_serves_against_old_broker
2026-06-21T12:05:18.2141236Z         PASS [   0.004s] (17/90) spt::oneliner_e2e at_logon_task_launches_daemon_in_background_not_foreground
2026-06-21T12:05:18.2175418Z         PASS [   0.003s] (18/90) spt::oneliner_e2e install_script_against_staged_release
2026-06-21T12:05:32.8819931Z         PASS [  14.664s] (19/90) spt::resume_template_e2e endpoint_run_resume_selects_resume_template_in_recorded_cwd
2026-06-21T12:05:52.5224291Z         PASS [  19.640s] (20/90) spt::unhost_psyche_reap_e2e endpoint_stop_reaps_the_hosted_psyche_process
2026-06-21T12:05:52.6625825Z         PASS [   0.140s] (21/90) spt-daemon::attach attach_registers_remote_drive_detection
2026-06-21T12:05:52.7363882Z         PASS [   0.074s] (22/90) spt-daemon::attach attach_survives_target_brain_restart_exactly_once
2026-06-21T12:05:52.7636879Z         PASS [   0.027s] (23/90) spt-daemon::attach broker_spawns_the_pty_child_in_the_requested_cwd
2026-06-21T12:05:52.7975069Z         PASS [   0.034s] (24/90) spt-daemon::attach controller_restart_with_viewer_no_displace_and_viewer_survives
2026-06-21T12:05:52.8372571Z         PASS [   0.040s] (25/90) spt-daemon::attach controller_viewer_matrix_and_loud_take
2026-06-21T12:05:52.8466169Z         PASS [   0.009s] (26/90) spt-daemon::attach handoff_seeds_resume_cursor_and_resubscribes_for_resume
2026-06-21T12:05:52.8843633Z         PASS [   0.038s] (27/90) spt-daemon::attach local_attach_via_loopback_conn_rides_the_same_pump
2026-06-21T12:05:52.9204443Z         PASS [   0.036s] (28/90) spt-daemon::attach loopback_attach_to_a_prepopulated_ring_delivers_without_deadlock
2026-06-21T12:05:52.9586965Z         PASS [   0.038s] (29/90) spt-daemon::attach loopback_self_dial_is_refused_local_uses_fallback_transport
2026-06-21T12:05:52.9682959Z         PASS [   0.010s] (30/90) spt-daemon::attach re_serve_resets_resume_cursor_after_a_pre_attached_consume
2026-06-21T12:05:53.0289175Z         PASS [   0.061s] (31/90) spt-daemon::attach remote_attach_drives_a_real_pty_cross_daemon
2026-06-21T12:05:53.1131145Z         PASS [   0.084s] (32/90) spt-daemon::attach resize_is_controller_exclusive
2026-06-21T12:05:53.1732143Z         PASS [   0.060s] (33/90) spt-daemon::attach same_origin_re_subscribe_does_not_displace
2026-06-21T12:05:53.2541252Z         PASS [   0.081s] (34/90) spt-daemon::attach spt_hosted_bringup_then_cross_node_attach_drives_the_pty
2026-06-21T12:05:55.2579490Z         FAIL [   2.003s] (35/90) spt-daemon::attach wedged_viewer_does_not_stall_controller
2026-06-21T12:05:55.2580917Z   stdout ───
2026-06-21T12:05:55.2581137Z 
2026-06-21T12:05:55.2581241Z     running 1 test
2026-06-21T12:05:55.2581537Z     test wedged_viewer_does_not_stall_controller ... FAILED
2026-06-21T12:05:55.2581799Z 
2026-06-21T12:05:55.2581919Z     failures:
2026-06-21T12:05:55.2582071Z 
2026-06-21T12:05:55.2582171Z     failures:
2026-06-21T12:05:55.2582404Z         wedged_viewer_does_not_stall_controller
2026-06-21T12:05:55.2582621Z 
2026-06-21T12:05:55.2582899Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 14 filtered out; finished in 1.99s
2026-06-21T12:05:55.2583277Z 
2026-06-21T12:05:55.2583405Z   stderr ───
2026-06-21T12:05:55.2583539Z 
2026-06-21T12:05:55.2583883Z     thread 'wedged_viewer_does_not_stall_controller' (3668157) panicked at crates/spt-daemon/tests/attach.rs:1071:33:
2026-06-21T12:05:55.2584560Z     ctrl event: Custom { kind: InvalidData, error: "output gap: got seq 5968 want 4504" }
2026-06-21T12:05:55.2585083Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:05:55.2585757Z 
2026-06-21T12:05:55.2779332Z         PASS [   0.020s] (36/90) spt-daemon::brain_swap brain_only_update_swaps_logic_with_zero_endpoint_interruption
2026-06-21T12:05:55.2982885Z         PASS [   0.020s] (37/90) spt-daemon::broker ack_false_input_suppresses_applied_frame
2026-06-21T12:05:55.3080409Z         PASS [   0.010s] (38/90) spt-daemon::broker broker_hosts_pty_child_streams_output_and_accepts_input
2026-06-21T12:05:55.3188631Z         PASS [   0.011s] (39/90) spt-daemon::broker controller_writer_reorder_consumer_view_stays_monotonic_and_session_live
2026-06-21T12:05:55.3282223Z         PASS [   0.009s] (40/90) spt-daemon::broker dead_session_subscribe_does_not_hang
2026-06-21T12:05:55.3381987Z         PASS [   0.010s] (41/90) spt-daemon::broker endpoint_keyed_inject_reaches_hosted_pty
2026-06-21T12:05:55.4656569Z         PASS [   0.127s] (42/90) spt-daemon::broker exactly_once_preserved_on_no_ack_path
2026-06-21T12:05:55.4754816Z         PASS [   0.010s] (43/90) spt-daemon::broker spawn_env_reaches_child
2026-06-21T12:05:55.4932494Z         PASS [   0.018s] (44/90) spt-daemon::broker wall_b_endpoint_run_env_then_send_reaches_pty
2026-06-21T12:05:55.4975430Z         PASS [   0.004s] (45/90) spt-daemon::budget measure_dormant_seat_budget
2026-06-21T12:05:56.1338113Z         PASS [   0.636s] (46/90) spt-daemon::daemon_e2e daemon_hosts_lifecycle_and_survives_brain_restart
2026-06-21T12:06:08.3893056Z         PASS [  12.255s] (47/90) spt-daemon::daemon_lifecycle_real_brain real_brain_process_hosts_the_psyche_for_an_online_live_endpoint
2026-06-21T12:06:08.5106846Z         PASS [   0.121s] (48/90) spt-daemon::digest harness_hosted_digest_projects_and_pushes_deltas
2026-06-21T12:06:08.5260508Z         PASS [   0.015s] (49/90) spt-daemon::dispatch classify_routes_a_node_label_feed_to_registry
2026-06-21T12:06:08.6883961Z         PASS [   0.162s] (50/90) spt-daemon::dispatch dispatcher_applies_a_notif_feed_undriven
2026-06-21T12:06:08.8349784Z         PASS [   0.146s] (51/90) spt-daemon::dispatch dispatcher_funnels_wan_messages_undriven
2026-06-21T12:06:09.0036745Z         PASS [   0.169s] (52/90) spt-daemon::dispatch dispatcher_serves_a_cross_node_shell_link
2026-06-21T12:06:09.0910496Z         PASS [   0.087s] (53/90) spt-daemon::dispatch dispatcher_serves_a_file_fetch_undriven
2026-06-21T12:06:09.1996886Z         PASS [   0.109s] (54/90) spt-daemon::dispatch dispatcher_serves_a_remote_drive_attach_undriven
2026-06-21T12:06:09.3587787Z         PASS [   0.159s] (55/90) spt-daemon::dispatch dispatcher_serves_a_subnet_serve_probe
2026-06-21T12:06:09.7220930Z         PASS [   0.363s] (56/90) spt-daemon::dispatch dispatcher_serves_a_sync_pull_undriven
2026-06-21T12:06:09.8195197Z         PASS [   0.097s] (57/90) spt-daemon::dispatch dispatcher_serves_an_update_pull_undriven
2026-06-21T12:06:10.0168328Z         PASS [   0.197s] (58/90) spt-daemon::dispatch dispatcher_surfaces_a_remote_won_notif_at_the_winning_node
2026-06-21T12:06:10.1426915Z         PASS [   0.126s] (59/90) spt-daemon::dispatch dispatcher_survives_an_unknown_stream
2026-06-21T12:06:10.4523101Z         PASS [   0.310s] (60/90) spt-daemon::driven_by_selfheal gap_a_live_session_controller_by_is_ambiguous_so_reconcile_must_not_clear
2026-06-21T12:06:10.4581115Z         PASS [   0.006s] (61/90) spt-daemon::driven_by_selfheal gap_b_sessionless_perch_reconcile_offlines_and_clears_driven_by
2026-06-21T12:06:10.4878331Z         PASS [   0.030s] (62/90) spt-daemon::handoff brain_restart_survives_gaplessly_with_fresh_gen_start
2026-06-21T12:06:10.5095676Z         PASS [   0.022s] (63/90) spt-daemon::idempotent pty_writes_are_exactly_once_across_brain_crashes
2026-06-21T12:06:13.5478614Z         PASS [   3.038s] (64/90) spt-daemon::inject_control_wedge a_backed_up_controller_does_not_wedge_the_session
2026-06-21T12:06:32.5335623Z         FAIL [  18.986s] (65/90) spt-daemon::inject_control_wedge a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T12:06:32.5336514Z   stdout ───
2026-06-21T12:06:32.5336654Z 
2026-06-21T12:06:32.5337110Z     running 1 test
2026-06-21T12:06:32.5337490Z     test a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach ... FAILED
2026-06-21T12:06:32.5337837Z 
2026-06-21T12:06:32.5337952Z     failures:
2026-06-21T12:06:32.5338380Z 
2026-06-21T12:06:32.5338515Z     failures:
2026-06-21T12:06:32.5338815Z         a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T12:06:32.5339163Z 
2026-06-21T12:06:32.5339410Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 18.97s
2026-06-21T12:06:32.5339715Z 
2026-06-21T12:06:32.5339840Z   stderr ───
2026-06-21T12:06:32.5340040Z     PUMP_IPC_READER: spawned
2026-06-21T12:06:32.5340254Z     PUMP_IPC_READER: spawned
2026-06-21T12:06:32.5340449Z     PUMP_IPC_READER: exited
2026-06-21T12:06:32.5341276Z     === W1b JOURNAL-WEDGE GATE: journaled_ops_pumped=11465 concurrent_attach_subscribed=true attach_received_pty_output=false (fixed = both true; pre-fix on Unix: subscribed=false — attach wedged on the held journal lock) ===
2026-06-21T12:06:32.5341929Z 
2026-06-21T12:06:32.5342287Z     thread 'a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach' (3668960) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:750:5:
2026-06-21T12:06:32.5343025Z     the concurrent attach must actually RECEIVE PTY output from the child (not just liveness): no FLOOD bytes rendered over the real attach pump.
2026-06-21T12:06:32.5343581Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:06:32.5343838Z 
2026-06-21T12:06:32.7590040Z         PASS [   0.225s] (66/90) spt-daemon::inject_control_wedge g1_choreography_happy_path_payload_reaches_pty_and_controller_keeps_control
2026-06-21T12:06:49.4560107Z         FAIL [  16.697s] (67/90) spt-daemon::inject_control_wedge g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T12:06:49.4561008Z   stdout ───
2026-06-21T12:06:49.4561163Z 
2026-06-21T12:06:49.4561265Z     running 1 test
2026-06-21T12:06:49.4561675Z     test g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input ... FAILED
2026-06-21T12:06:49.4562037Z 
2026-06-21T12:06:49.4562138Z     failures:
2026-06-21T12:06:49.4562299Z 
2026-06-21T12:06:49.4562410Z     failures:
2026-06-21T12:06:49.4562715Z         g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T12:06:49.4563025Z 
2026-06-21T12:06:49.4563301Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 16.69s
2026-06-21T12:06:49.4563683Z 
2026-06-21T12:06:49.4563820Z   stderr ───
2026-06-21T12:06:49.4564035Z     PUMP_IPC_READER: spawned
2026-06-21T12:06:49.4564428Z     ENDPOINT_INJECT:xlate-g2-ep (57 bytes → translation binary)
2026-06-21T12:06:49.4564967Z     TRANSLATION_FAULT: no {commit} within INJECT_COMMIT_DEADLINE — terminating binary, reverting to raw inject
2026-06-21T12:06:49.4565391Z     PUMP_IPC_READER: spawned
2026-06-21T12:06:49.4565749Z     ENDPOINT_INJECT:xlate-g2-ep (35 bytes, idle-direct — activity not yet gated)
2026-06-21T12:06:49.4566077Z     PUMP_IPC_READER: spawned
2026-06-21T12:06:49.4566839Z     === W2 G2 NO-COMMIT FAULT GATE: delivered=true op_flushed=false sessions_answered=true delivered2=true raw_fallback_reached=false (op_flushed=true → controller input never wedged; raw_fallback → binary faulted) ===
2026-06-21T12:06:49.4567432Z 
2026-06-21T12:06:49.4567824Z     thread 'g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input' (3669036) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1196:5:
2026-06-21T12:06:49.4568926Z     after the commit deadline the floor must RELEASE and buffered operator keystrokes must flush to the PTY — the controller's input must NOT wedge (the mandatory bounded-buffer guard; doyle non-negotiable = never park forever)
2026-06-21T12:06:49.4569848Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:06:49.4570167Z     PUMP_IPC_READER: exited
2026-06-21T12:06:49.4570633Z 
2026-06-21T12:06:49.9973073Z         PASS [   0.541s] (68/90) spt-daemon::inject_control_wedge g3_content_free_ping_never_duplicates_operator_keystrokes_into_binary
2026-06-21T12:06:50.1001153Z         PASS [   0.103s] (69/90) spt-daemon::inject_control_wedge g4_translation_child_is_reaped_no_zombie_after_session_down
2026-06-21T12:06:50.4217067Z         PASS [   0.322s] (70/90) spt-daemon::inject_control_wedge injecting_a_large_payload_into_a_stdin_ignoring_child
2026-06-21T12:07:09.2483318Z         FAIL [  18.826s] (71/90) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:07:09.2484148Z   stdout ───
2026-06-21T12:07:09.2484296Z 
2026-06-21T12:07:09.2484401Z     running 1 test
2026-06-21T12:07:09.2484749Z     test p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker ... FAILED
2026-06-21T12:07:09.2485082Z 
2026-06-21T12:07:09.2485219Z     failures:
2026-06-21T12:07:09.2485367Z 
2026-06-21T12:07:09.2485465Z     failures:
2026-06-21T12:07:09.2485785Z         p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:07:09.2486076Z 
2026-06-21T12:07:09.2486362Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 18.81s
2026-06-21T12:07:09.2486824Z 
2026-06-21T12:07:09.2486954Z   stderr ───
2026-06-21T12:07:09.2487173Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:09.2487430Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:09.2487673Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:09.2487915Z     PUMP_IPC_READER: exited
2026-06-21T12:07:09.2489649Z     === P0 PASTE-WEDGE GATE: pumped=46170 keystroke_accepted=true concurrent_attach_subscribed=true attach_received_output=false backpressured=true backpressure_after_stop=Some(true) (fixed = subscribed+got_output+keystroke_accepted true; pre-fix: parked dispatch thread → subscribed=false / no output) ===
2026-06-21T12:07:09.2490625Z 
2026-06-21T12:07:09.2491035Z     thread 'p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker' (3669134) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1996:5:
2026-06-21T12:07:09.2492386Z     the concurrent attach must actually RECEIVE PTY output from the flooding child (not just liveness) while the paste write is parked — output delivery does not go through the input writer, so receiving bytes proves the dispatch serviced this attach despite the parked write.
2026-06-21T12:07:09.2493364Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:07:09.2493640Z 
2026-06-21T12:07:09.5832543Z         PASS [   0.335s] (72/90) spt-daemon::inject_control_wedge w5_a1_locally_driven_session_reports_controller_by_none
2026-06-21T12:07:13.6411861Z         FAIL [   4.058s] (73/90) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:07:13.6412704Z   stdout ───
2026-06-21T12:07:13.6412854Z 
2026-06-21T12:07:13.6412954Z     running 1 test
2026-06-21T12:07:13.6413331Z     test w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some ... FAILED
2026-06-21T12:07:13.6413727Z 
2026-06-21T12:07:13.6413822Z     failures:
2026-06-21T12:07:13.6413947Z 
2026-06-21T12:07:13.6414051Z     failures:
2026-06-21T12:07:13.6414366Z         w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:07:13.6414666Z 
2026-06-21T12:07:13.6414953Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 4.05s
2026-06-21T12:07:13.6415333Z 
2026-06-21T12:07:13.6415461Z   stderr ───
2026-06-21T12:07:13.6415678Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:13.6415937Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:13.6416180Z     PUMP_IPC_READER: spawned
2026-06-21T12:07:13.6417319Z     === W5 A2 CHARACTERIZATION: subscribed=true driven_after_attach=Some("7fe92c37b5ad031c93d6855cae9c1eda830d1937ed09c1c9a95ca63e1c9411fa") cby_attached=Some(Some("7fe92c37b5ad031c93d6855cae9c1eda830d1937ed09c1c9a95ca63e1c9411fa")) session_still_listed=true cby_after_abandon=Some(None) driven_after_abandon=None ===
2026-06-21T12:07:13.6421092Z     === W5 A2 VERDICT: controller_by==None sufficient for Gap A? true (false ⇒ wedged slot stays Some(origin) ⇒ the lost-detach fix must be broker-side eviction — a reconcile `controller_by==None` check alone does NOT catch this; it only catches A1 / Gap B) ===
2026-06-21T12:07:13.6422025Z 
2026-06-21T12:07:13.6422449Z     thread 'w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some' (3669196) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1671:9:
2026-06-21T12:07:13.6423973Z     A2: an abandoned remote controller on an IDLE session must STILL read controller_by == Some(origin) (the slot does not self-clear without output-drain-evict or a clean EOF) — proving controller_by==None is NOT a sufficient Gap-A signal for the production wedged-pump case; the lost-detach clear must be broker-side eviction. Got: Some(None)
2026-06-21T12:07:13.6425093Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T12:07:13.6425388Z 
2026-06-21T12:07:15.4945913Z         PASS [   1.853s] (74/90) spt-daemon::input_ack_deadlock input_flood_through_serve_attach_does_not_deadlock_broker
2026-06-21T12:07:17.5376065Z         PASS [   2.043s] (75/90) spt-daemon::resume cold_start_resumes_all_sessions_from_the_broker_cursor
2026-06-21T12:07:21.7470654Z         PASS [   4.209s] (76/90) spt-daemon::resume resume_below_ring_floor_clamps_forward_without_gap_error
2026-06-21T12:07:22.5620991Z         PASS [   0.815s] (77/90) spt-daemon::resume resume_mode_brain_spawning_new_sessions_delivers_each
2026-06-21T12:07:22.6176543Z         PASS [   0.055s] (78/90) spt-daemon::shellchan hung_shell_stalls_no_other_owner
2026-06-21T12:07:22.7277332Z         PASS [   0.110s] (79/90) spt-daemon::shellchan stdin_receipt_delivers_spooled_frames_exactly_once
2026-06-21T12:07:22.8030168Z         PASS [   0.075s] (80/90) spt-daemon::two_origin_spanning one_source_two_consumers_spans_and_merges
2026-06-21T12:07:22.8096859Z         PASS [   0.007s] (81/90) spt-daemon::twohost two_host_ladder_role_a
2026-06-21T12:07:22.8153023Z         PASS [   0.006s] (82/90) spt-daemon::twohost two_host_ladder_role_b
2026-06-21T12:07:22.8303841Z         PASS [   0.015s] (83/90) spt-term::dsr drain_forwards_child_output
2026-06-21T12:07:22.8556922Z         PASS [   0.025s] (84/90) spt-term::inject ctrl_c_interrupts_the_child
2026-06-21T12:07:22.8703712Z         PASS [   0.015s] (85/90) spt-term::inject send_line_reaches_child_and_preserves_order
2026-06-21T12:07:23.8764499Z         PASS [   1.006s] (86/90) spt-term::stream bounded_backpressure_stalls_an_unconsumed_reader
2026-06-21T12:07:23.8817195Z         PASS [   0.005s] (87/90) spt-term::stream delivers_every_value_under_resize
2026-06-21T12:07:23.8947608Z         PASS [   0.013s] (88/90) spt-term::surface captures_child_output_off_the_pty
2026-06-21T12:07:23.8995808Z         PASS [   0.005s] (89/90) spt-term::surface resize_under_load_does_not_hang_or_panic
2026-06-21T12:07:23.9046337Z         PASS [   0.005s] (90/90) spt-term::surface spawn_program_in_lands_the_child_in_the_requested_cwd
2026-06-21T12:07:23.9047208Z ────────────
2026-06-21T12:07:23.9047522Z      Summary [ 408.003s] 90 tests run: 85 passed, 5 failed, 0 skipped
2026-06-21T12:07:23.9047965Z         FAIL [   2.003s] (35/90) spt-daemon::attach wedged_viewer_does_not_stall_controller
2026-06-21T12:07:23.9048667Z         FAIL [  18.986s] (65/90) spt-daemon::inject_control_wedge a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T12:07:23.9049723Z         FAIL [  16.697s] (67/90) spt-daemon::inject_control_wedge g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T12:07:23.9050624Z         FAIL [  18.826s] (71/90) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T12:07:23.9051447Z         FAIL [   4.058s] (73/90) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T12:07:23.9077751Z error: test run failed
2026-06-21T12:07:23.9103991Z ##[error]Process completed with exit code 100.
